package com.apps.helper;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;

/**
 * freemarks帮助类
 */
public class FreemarksHelper
{
    /**
     * 模板文件夹名称
     */
    private static String TemplatesName="templates";

    /**
     * 生成HTML静态页面,传入ftl文件名,必须是含完整路径的文件名
     * @param templates_path 模板文件文件夹路径
     * @param ftl  模板文件路径
     * @param parameterMap  渲染模板文件所需参数
     */
    public static void  GenerateHtmlToPath(String templates_path,String ftl, Map<String, Object> parameterMap)
    {
        try {
            //如果没有模板文件夹就创建
            String filepath=System.getProperty("user.dir").replaceAll("\\\\","/")+"/"+TemplatesName+CalculationDir(ftl);
            File file=new File(filepath);
            //如果文件夹不存在创建文件夹
            if(!file.exists())
                file.mkdir();
            //生成
            Configuration configuration = new Configuration(Configuration.VERSION_2_3_22);
            configuration.setDirectoryForTemplateLoading(new File(templates_path));
            Template template = configuration.getTemplate(ftl+".ftlh");
            //求出文件名
            String[] ftls = ftl.split("/");
            ftl = ftls[ftls.length-1];
            template.process(parameterMap, new OutputStreamWriter(new FileOutputStream(file+"/"+ftl+".html"),"utf-8"));
        }catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 传入/home/index这样的路径,返回所需文件夹
     * @param ftl
     */
    public static String CalculationDir(String ftl)
    {
        String result="";
        String[] path=ftl.split("/");
        if(path.length<=1)
            return result;
        for(int i=0;i<path.length-1;i++)
        {
            result+="/"+path[i];
        }
        return result;
    }

   public static void main(String... args)
   {
//       String ftl="/home/index.ftlh";
//
//       String[] ftlpaths=ftl.split("/");
//       String ftl_path="";
//       for(String str:ftl_path)
//       {
//           if(!str.contains(".ftlh"))
//
//       }
   }
}
